#ifndef __MIME_H__
#define __MIME_H__

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include "util.h"
#include "buffer.h"
#include "mime.h"

typedef struct Mime
{
    //char   *CharSet;
    char   *MimeVersion;
    char   *ContentType;
    char   *ContentTransferEncoding;
    char   *ContentId;
    char   *ContentDisposition;
    char   *ContentMD5;
    char   *ContentLanguage;

    char   *boundary;
    char   *Data;  
    int    DataSize; // Data分配的内存空间大小
    int    HeadStart; // mime的头部开始位置，如果有boundary, 会跳过boundary, 如果mime在信件头力，这个值是0
    int    HeadLen;
    int    DataStart; // mime数据部分的开始位置
    int    DataLen; // 长度

    int    stype; // 1 text , 2 html, 0 未设置, 3 其他可存储为文件的东西, 4 可忽略的只表示结构信息的
    char   ctype; // contenttype 类型，text/为t, multipart/为m, application/为a,image/为i,audio/为u, chemical/为c, message/为e, model/为o, video/为v
    char   *basepath; // 这里的内存不需要释放，这个是指向MAIL中的
}MIME;

MIME*   mime_new(char* bpath);
void    mime_delete(MIME*);
void    mime_clear(MIME*);
int     mime_set(void*, char*, char*, int);
int     mime_parse(MIME*, BUFFER*, int is_parse_data, int have_head, GHashTable *);
void    mime_print(MIME *);
int     mime_string (MIME*, char *, int );

#endif

